#ifndef LCOM_LOADMUSIC_H
#define LCOM_LOADMUSIC_H

/** Som
 */
typedef struct Sound_ *Sound;

/** Contador de milisegundos */
extern volatile unsigned int MSECS;

/** Inicializa o sistema de sons
 */
void sound_init (void);


/** \brief Lê um ficheiro de músicas
 *
 * \param filename Ficheiro de músicas
 * \return Uma estrutura que representa uma música ou NULL se um erro ocorreu
 */
Sound sound_load (const char *filename);


/** Desaloca um som
 *
 * \param sound Som a ser desalocado
 */
void sound_delete (Sound sound);


/** Toca uma música
 *
 * \param music Música a ser tocada
 */
void sound_music_play (Sound music);


/** Toca um efeito sonoro
 * 
 * \param sound Som a ser tocado
 */
void sound_effect_play (Sound sound);


/** Pausa n milisegundos enquanto toca um som
 */
void sound_milisleep (int n);


/** Finaliza o sistema de sons
 */
void sound_finish (void);

/** Muda MSECS para o valor dado
 * \param msecs Novo valor de MSECS
 */
void sound_set_msecs (unsigned int msecs);


/** \brief Ativa e desativa o som
 */
void sound_toggle (void);

#endif /* LCOM_LOADMUSIC_H */

